home *** CD-ROM | disk | FTP | other *** search
/ L' Effet Pommier 3 / L'Effet Pommier - Volume 03.iso / Communication / Digester 2.1.1b / sources / post-send.c < prev   
Text File  |  1996-01-15  |  4KB  |  146 lines

  1. /* 
  2.     file:     post-send
  3.     by:        A.C. van der Ham
  4.     e-mail:    a.c.vanderham@et.tudelft.nl
  5.     
  6.     purpose:    to be used together with digester to enable easy reply to messages
  7.     warning:    only works with UNIX servers for now
  8.     where:    compile it and put it in your html scripts directory
  9.     notice:    don't forget to set the correct path for the info-mac files
  10. */
  11.  
  12. #define    PATH        "/home/vdham/Mosaic/info-mac/"
  13.  
  14.  
  15. #include    <stdio.h>
  16. #include    <stdlib.h>
  17. #include    <strings.h>
  18.  
  19. #define    MAXLINE    512
  20. #define    OK            0
  21. #define    ERROR        1
  22. #define    ITEMTEXT    "<a name=item%d"
  23. #define    INFOMAC    "info-mac@sumex-aim.stanford.edu"
  24. #define    EOM        "<a name=item"
  25.  
  26. int findmessage( int item, char *file )
  27. {
  28.     FILE    *inP;
  29.     char    line[256], searchString[100], address[80], *cptr;
  30.     
  31.     strcpy( line, PATH );
  32.     strcat( line, file );
  33.  
  34.     searchString[0]=0;
  35.     
  36.     
  37.     sprintf( searchString, ITEMTEXT, item );
  38.  
  39.     strcpy( address, INFOMAC );
  40.  
  41.     if( (inP = fopen( line, "r" )) != NULL )
  42.     {    
  43.         do {
  44.                 fgets( line, 256, inP );
  45.         } while( (!feof(inP)) &&
  46.                     (strstr(line, searchString)==NULL) );
  47.         
  48.         if( feof(inP) )
  49.             return(ERROR);
  50.         
  51.         fputs( "<pre>", stdout );
  52.             
  53.         do {
  54.                 fgets( line, 256, inP );
  55.                 if( (strstr(line,"<")==NULL) && (strstr(line,">")==NULL) )
  56.                     fputs( line, stdout );
  57.  
  58.                 if( (cptr=strstr( line, "From: " ))!=NULL )
  59.                 {
  60.                     if( strstr(line, "mailto:")!=NULL )
  61.                     {
  62.                         cptr=strstr(line, "mailto:")+strlen("mailto:");
  63.                         strcpy(address, cptr);
  64.                         if((cptr=strstr(address, ">"))!=NULL)
  65.                             *cptr=0;
  66.                     }
  67.                     else
  68.                     {
  69.                        cptr += 6;
  70.                        strcpy(address, cptr);
  71.                        if( (cptr=strstr(address,"\n")) != NULL)
  72.                            *cptr=0;
  73.  
  74.                        if( (cptr=strstr(address,"<")) != NULL)
  75.                        {
  76.                            strcpy(address, cptr+4);
  77.                            if( (cptr=strstr(address,">")) != NULL)
  78.                                *cptr=0;
  79.                        }
  80.  
  81.                        if( (cptr=strstr(address," ")) != NULL)
  82.                            *cptr=0;
  83.                     }
  84.                 }
  85.         } while( (!feof(inP)) &&
  86.                     (strstr(line, EOM)==NULL) );
  87.  
  88.         fputs( "</pre>", stdout );
  89.                             
  90.         fprintf( stdout, "Reply to: <a href=mailto:%s>%s</a><p>\n", address, address );
  91.         fprintf( stdout, "Reply to: <a href=mailto:%s>%s</a><p>\n", INFOMAC, INFOMAC );
  92.  
  93.         fclose(inP);
  94.     }
  95.     else
  96.     {
  97.         return(ERROR);
  98.     }
  99.     return(OK);
  100. }
  101.  
  102.  
  103. int main( int argc, char *argv[] )
  104. {
  105.     char    *cptr;
  106.     char    file[80];
  107.     int    item=0;
  108.     
  109.     argc=argc;
  110.     
  111.     fprintf(stdout, "Content-type: text/html\n\n");
  112.  
  113.     if( argv[1]!=NULL)
  114.     {
  115.         if((cptr=strstr(argv[1],","))!=NULL)
  116.         {
  117.             *cptr=0;
  118.             item=atoi(argv[1]);
  119.             strcpy(file, cptr+1);
  120.             if( findmessage( item, file ) == ERROR)
  121.             {            
  122.                 fprintf(stdout, "<title>can't find message</title>\n");
  123.                 fprintf(stdout, "Sorry, something went wrong in message selection.<p>\n");
  124.                 fprintf(stdout, "Please notify: <a href=mailto:a.c.vanderham@et.tudelft.nl>André van der Ham</a>.<p>\n");
  125.                 fprintf(stdout, "ERROR: can't find message?!\n");
  126.             }
  127.         }
  128.         else
  129.         {
  130.             fprintf(stdout, "<title>no delimiter</title>\n");
  131.             fprintf(stdout, "Sorry, something went wrong in message selection.<p>\n");
  132.             fprintf(stdout, "Please notify: <a href=mailto:a.c.vanderham@et.tudelft.nl>André van der Ham</a>.<p>\n");
  133.             fprintf(stdout, "ERROR: File name delimiter not found?!\n");
  134.         }
  135.     }
  136.     else
  137.     {
  138.         fprintf(stdout, "<title>no arguments</title>\n");
  139.         fprintf(stdout, "Sorry, something went wrong in message selection.<p>\n");
  140.         fprintf(stdout, "Please notify: <a href=mailto:a.c.vanderham@et.tudelft.nl>André van der Ham</a>.<p>\n");
  141.         fprintf(stdout, "ERROR: Can't find any arguments to query?!\n");
  142.     }
  143.     
  144.     return(0);
  145. }
  146.